const express = require('express');
const cors = require('cors');
const app = express();

// 使用 express-async-errors 插件自动捕获 async 错误
require('express-async-errors');

app.use(cors({
    origin: 'http://127.0.0.1:5500',
}))
// 模拟异步服务方法
async function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      Math.random() > 0.5 ? resolve('Hello from async data') : reject(new Error('Fetch failed'));
    }, 500);
  });
}

// 路由处理
app.get('/', async (req, res) => {
  const data = await fetchData();
  res.json({ data });
});

// 全局错误处理中间件（必须放在所有路由后面！目的是接收所有的错误信息）
app.use((err, req, res, next) => {
  console.error(`Error caught: ${err.message}`);
  res.status(500).json({ error: 'Internal Server Error' });
});

// 启动服务器
app.listen(3000, () => {
  console.log('Express server is running on http://localhost:3000');
});
